package com.baibei.pay.withdraw;

import com.baibei.basic.IPresenter;
import com.baibei.basic.IPresenterView;
import com.baibei.basic.ISendSmsView;
import com.baibei.model.BalanceInfo;
import com.baibei.model.BankInfo;
import com.baibei.model.ProvinceInfo;

import java.util.List;

/**
 * 提现契约层
 * Created by shenminjie on 2017/8/15.
 * mail:shenminjie@100bei.com
 */

public class WithdrawContract {

    /**
     * 提现视图层
     */
    interface WithdrawView extends IPresenterView, ISendSmsView {

        /**
         * 加载余额失败
         */
        void onLoadBasicDataFailed(String msg);

        /**
         * 加载余额
         *
         * @param info info
         */
        void onLoadBalanceInfo(BalanceInfo info);


        /**
         * 加载银行列表
         *
         * @param infos infos
         */
        void onLoadBankList(List<BankInfo> infos);

        /**
         * 获取mobile phone
         *
         * @return return
         */
        String getPhone();

        /**
         * 获取验证码类型
         *
         * @return return
         */
        String getCheckCodeType();

        /**
         * 获取金额
         *
         * @ return return
         */
        String getWithdrawAmount();

        /**
         * 获取城市
         *
         * @return return
         */
        String getCity();

        /**
         * 获取省份
         *
         * @return return
         */
        String getProvince();

        /**
         * 获取银行代号
         *
         * @return return
         */
        String getBankCode();

        /**
         * 获取开户支行
         *
         * @return return
         */
        String getSubBank();

        /**
         * 获取银行账号
         *
         * @ return return
         */
        String getBankAccount();

        /**
         * 获取开户名
         *
         * @return return
         */
        String getRealName();

        /**
         * 获取资金密码
         *
         * @return return
         */
        String getFundPassword();

        /**
         * 获取验证码
         *
         * @return return
         */
        String getCheckCode();

        /**
         * show loading
         */
        void showLoading();

        /**
         * 隐藏loading
         */
        void hideLoading();

        /**
         * 提现操作中
         */
        void showWithdrawLoading();

        /**
         * 提现失败
         *
         * @param msg msg
         */
        void onWithdrawFailed(String msg);

        /**
         * 提现成功
         */
        void onWithdrawSuccess();

        /**
         * 加载资金时间信息
         * @param msg
         */
        void onLoadFundTimeInfo(String msg);
    }

    /**
     * 提现展示层
     */
    interface Presenter extends IPresenter {

        /**
         * 获取余额跟银行列表
         */
        void getBalanceAndBankList();

        /**
         * 获取验证码
         */
        void getCheckCode();

        /**
         * 提取金额
         */
        void withdrawAmount();

        /**
         * 获取银行信息
         *
         * @return return
         */
        List<BankInfo> getBankInfos();

        /**
         * 获取城市列表
         *
         * @return return
         */
        List<ProvinceInfo> getProvinceInfos();

    }

}
